package com.cuvretool.view.coordinate;

import java.util.ArrayList;

import com.cuvretool.Base;
import com.cuvretool.utils.Vector2;

/**
 * 绘制网格相关参数,左下角为原点
 * since 2015年2月17日 上午12:48:42
 * @author boy
 */
public class GridDrawInfo implements Base{
	// ===========================================================
	// Constants
	// ===========================================================
	/**以固定间距绘制网格*/
	public static final int OnGridSpace = 1;
	/**以固定网格数绘制网格*/
	public static final int OnGridNumber = 2;
	// ===========================================================
	// Fields
	// ===========================================================
	/**绘制的网格线数*/
	private int mGridAxisX,mGridAxisY;
	/**绘制的网格区的宽高*/
	public float mTotalX,mTotalY;
	/**绘制的网格左下角的起点坐标值*/
	public float mBeginX,mBeginY;
	/**绘制的网格间距值*/
	private float mSpacingX,mSpacingY;
	/**绘制的网格线坐标点数组,记录两点间的大值，小值使用单方向的0*/
	private ArrayList<Vector2> mPositionsX,mPositionsY;
	/**网格绘制模式*/
	private int mDrawType = OnGridNumber;
	// ===========================================================
	// Constructors
	// ===========================================================
	public GridDrawInfo() {
		mPositionsX = new ArrayList<Vector2>();
		mPositionsY = new ArrayList<Vector2>();
		
		init();
	}
	// ===========================================================
	// Getter & Setter
	// ===========================================================
	/**
	 * 获取X轴间距值
	 * @return
	 */
	public float getSpacingX() {
		return this.mSpacingX;
	}
	/**
	 * 获取Y轴间距值
	 * @return
	 */
	public float getSpacingY() {
		return this.mSpacingY;
	}
	/**
	 * 设置X轴间距值
	 * @return
	 */
	public void setSpacingX(float space) {
		this.mSpacingX = space;
	}
	/**
	 * 设置 Y轴间距值
	 * @return
	 */
	public void setSpacingY(float space) {
		this.mSpacingY = space;
	}
	
	/**
	 * 获取X轴格数
	 * @return
	 */
	public int getGridNumberX() {
		return mGridAxisX;
	}
	/**
	 * 获取 Y轴间距值
	 * @return
	 */
	public int getGridNumberY() {
		return mGridAxisY;
	}
	/**
	 * 设置X轴格数
	 * @return
	 */
	public void setGridNumberX(int number) {
		this.mGridAxisX = number;
	}
	/**
	 * 设置 Y轴格数
	 * @return
	 */
	public void setGridNumberY(int numnber) {
		this.mGridAxisY = numnber;
	}
	
	/**
	 * 获取X轴绘制点集
	 * @return
	 */
	public ArrayList<Vector2> getPostionX(){
		return this.mPositionsX;
	}
	/**
	 * 获取Y轴绘制点集
	 * @return
	 */
	public ArrayList<Vector2> getPostionY(){
		return this.mPositionsY;
	}
	/**
	 * 获取网格绘制模式
	 */
	public int getType(){
		return mDrawType;
	}
	/**
	 * 设置网格绘制模式
	 * @param type
	 */
	public void setType(int type){
		mDrawType = type;
	}
	// ===========================================================
	// Methods for/from SuperClass/Interfaces
	// ===========================================================
	@Override
	public void init() {
		mGridAxisX = 20;
		mGridAxisY = 10;
	}
	
	@Override
	public void run() {
		mPositionsX.clear();
		mPositionsY.clear();
		if(mDrawType == OnGridNumber) {
			mSpacingX = mTotalX/(mGridAxisX-1);
			for (int i = 0; i < mGridAxisX; i++) {
				float a = mSpacingX * i + mBeginX;
				mPositionsX.add(new Vector2(a, mBeginY+mTotalY));
			}
			
			mSpacingY = mTotalY/(mGridAxisY-1);
			for (int j = 0; j < mGridAxisY; j++) {
				float a = mSpacingY * j + mBeginY;
				mPositionsY.add(new Vector2(mBeginX+mTotalX, a));
			}
		} else if(mDrawType == OnGridSpace) {
			mGridAxisX = (int) (mTotalX/mSpacingX);
			for (int i = 0; i < mGridAxisX+1; i++) {
				float a = mSpacingX * i + mBeginX;
				mPositionsX.add(new Vector2(a, mBeginY+mTotalY));
			}
			
			mGridAxisY = (int) (mTotalY/mSpacingY);
			for (int j = 0; j < mGridAxisY+1; j++) {
				float a = mSpacingY * j + mBeginY;
				mPositionsY.add(new Vector2(mBeginX+mTotalX, a));
			}
		}
	}
	
	@Override
	public void over() {
		// TODO Auto-generated method stub
		
	}
	// ===========================================================
	// Methods
	// ===========================================================
	
	// ===========================================================
	// Inner and Anonymous Classes
	// ===========================================================
}
